module.exports = {
	publicPath: './',
	assetsDir: 'assets',
	// 输出目录
	outputDir: 'dist',
	productionSourceMap: false,
	configureWebpack: {
		// 警告 webpack 的性能提示
		performance: {
			hints: 'warning',
			// 入口起点的最大体积
			maxEntrypointSize: 50000000,
			// 生成文件的最大体积
			maxAssetSize: 30000000,
			// 只给出 js 文件的性能提示
			assetFilter: function (assetFilename) {
				return assetFilename.endsWith('.js')
			}
		}
	},
	devServer: {
		host: 'localhost',
		port: 8899,
		/*proxy的作用是通过npm run serve时，应用里如果有http请求，比如fetch('/user-service/test',...)
		* ，那么这个请求 不会 转发到http://localhost:8866/user-service/test
		* ，而是变成http://localhost:8080/test，注意是/test没有前面的/user-service
		* ，如果要变成http://localhost:8080/user-service/test
		* pathRewrite要改成'/user-service': '/user-service'才行
		* ，有了这个可以方便调试前端项目的同时请求后端接口，它的原理其实就是nginx里的反向代理
		* ，这里第一个/user-service是表示声明一个转发的uri前缀，当匹配到是以/user-service开头
		* 的请求时就会通过这个proxy item来转发到8080端口的服务端里，这里应该可以定义多个proxy item
		* ，第二个/user-service只是定义这个请求是否需要进行地址的映射；*/
		/*proxy: {
			'^/user-service': {
				target: 'http://localhost:8080',
				changeOrigin: true,
				pathRewrite: {
					'/user-service': ''
				}
			}
		},*/
		/*before是vue-cli3.x提供的用于模拟服务端接口，这里可以和Dashboard.vue里的fetchTodoList方法一起看*/
		before(app) {
			const bodyParser = require('body-parser')
			app.use(bodyParser.json());
			app.use(bodyParser.urlencoded({extended: true}))
			const ResultConstants = require('./src/constant/result_constants')

			app.post('/silentdoer-games/login', (req, resp) => {
				const originData = require('./mock/user')
				const data = {}
				Object.assign(data, originData)

				// 注意，不能JSON.stringify(req)
				// 以下是可以获得的参数
				/*console.log(req.query)
				console.log(req.params)
				console.log(req.headers)
				console.log(req.url)
				console.log(req.method)
				console.log(req.httpVersion)
				console.log(req.body)*/

				if (req.body.username !== 'admin') {
					data.code = ResultConstants.COMMON_EX
					data.message = '模拟错误'
					data.state = null
				}

				// 还有resp.send('...')来发送普通字符串
				resp.json(data)
			})

			app.get('/other', (req, resp, next) => {
				resp.json({})
			})
		}
	},
	chainWebpack: config => {
		const path = require('path')
		config.resolve.alias.set('@', path.join(__dirname, 'src'))
	},
}